1
Архитектурные основы экосистемы HIP
AI022Lesson 3
00:00

Экосистема экосистема HIP представляет собой тонкий слой абстракции, предназначенный для обеспечения совместимости исходного кода между архитектурами AMD и NVIDIA. Она использует стек ROCm (Radeon Open Compute) стек, в частности, используя архитектуру гетерогенных систем (HSA) время выполнения и драйвер ядра-слияния (KFD).

1. Инициализация запуска

Инициализация начинается с низкоуровневых рукопожатий драйверов ядра через hsa_init(0, ...) и hsaKmtOpenKFD(...). Эти вызовы устанавливают коммуникационный мост между приложениями в пользовательском режиме и аппаратным обеспечением графических процессоров AMD.

2. Обнаружение топологии и свойств

Перед запуском ядер среда выполнения определяет возможности аппаратного обеспечения с помощью hsaKmtAcquireSystemProperties и hsaKmtGetNodeProperties. Она сопоставляет физическую память с узлами графических процессоров с помощью hsaKmtMapMemoryToGPUNodes, обеспечивая видимость таблицы страниц для устройства.

3. Путь компиляции

Мост между CUDA и HIP строится на двух столпах: hipify-perl (транспилятор на основе регулярных выражений) и hipcc (обёртка компилятора).

# Пример рабочего процесса портирования
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. Логика версионирования

Совместимость обеспечивается с помощью точной формулы, чтобы гарантировать hipRuntimeGetVersion соответствовал таблицам расширений HSA:

$$\text{HIP\_ВЕРСИЯ} = \text{ОСНОВНАЯ} \times 10^7 + \text{МЛАДШАЯ} \times 10^5 + \text{ПАТЧ}$$

Уровень приложений (./square.out)Уровень HIP (hipcc / API времени выполнения)Время выполнения HSA / Таблицы расширенийДрайвер ядра (KFD) и аппаратное обеспечение
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>